<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
       * title: 两数之和
       * ask: [array, target]传入任意长度数组array，在数组中找出 两个下标的值 相加为 target;
       *
       */
      /*
       * 解题思路: 使用map 的 has 检验
       */
      /**
       * @param {number[]} nums
       * @param {number} target
       * @return {number[]}
       */
      const twoSum = (nums, target) => {
        const map = new Map();
        for (let i = 0; i < nums.length; i++) {
          // 储存 map 键值对;
          const S = target - nums[i];
          // S 保存 target 减去 nums[i]的 差值;
          // 使用 map.has(S); 插值为true， 为负数 就为false了，Map !!!
          console.log(S);
          if (map.has(S)) {
            return [map.get(S), i];
          }
          map.set(nums[i], i);
        }
      };
      twoSum([2, 7, 11, 15], 9);
      
    </script>
  </body>
</html>
